package rui.game.move;

import lombok.Getter;
import lombok.Setter;
import rui.game.Chunk;
import rui.game.component.GamePanel;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 * 移动
 * @author 赵睿
 */
public abstract class Move {
    @Setter
    @Getter
    protected GamePanel gamePanel;

    public Move(GamePanel gamePanel) {
        this.gamePanel = gamePanel;
    }

    public void move(){

    }


    public static class Left extends Move {
        public Left(GamePanel gamePanel) {
            super(gamePanel);
        }

        @Override
        public void move() {
            //TODO 现在只考虑一行的情况。
            //TODO 左移动的策略为：1. 和左边的元素比较，是否相同。2，如果相同，则只合并，右边置为空 3. 如果不同，不移动，4. 如果为左空，向前移动。

            List<Chunk> chunkList= gamePanel.getLeftList();

            Chunk chunk=chunkList.get(0);

            while(chunk.getLeft()!=null){
                if("".equals(chunk.getText())){
                    //为空，跳过，下一个
                    chunk=chunk.getLeft();
                }else if("".equals(chunk.getLeft().getText())){
                    //左一个为空，移动到这个左一个位置

                    chunk.getLeft().setText(chunk.getText());
                } else if(chunk.getText().equals(chunk.getLeft().getText())){
                    //TODO 内容相同，合并数字，积分增加。
                }else if(
            }
            //end -- 已经到了边了 ，完成操作。














        }

        //TODO move

    }

    public static class Right extends Move {
        public Right(GamePanel gamePanel) {
            super(gamePanel);
        }
        //TODO move
    }

    public static class Up extends Move {
        public Up(GamePanel gamePanel) {
            super(gamePanel);
        }
        //TODO move
    }

    public static class Down extends Move {
        public Down(GamePanel gamePanel) {
            super(gamePanel);
        }
        //TODO move
    }
}
